package com.zjsru.oneDay202212;

import java.util.Arrays;

/**
 * @Author: CookLee
 * @Date: 2022/12/23
 * <p>
 * 执行操作后的变量值 ++X 和 X++ 使变量 X 的值 加 1 --X 和 X-- 使变量 X 的值 减 1
 * <p>
 * 输入：operations = ["--X","X++","X++"] 输出：1 解释：操作按下述步骤执行： 最初，X = 0 --X：X 减 1 ，X =  0 - 1 = -1 X++：X 加 1 ，X = -1 + 1 =  0
 * X++：X 加 1 ，X =  0 + 1 =  1
 * <p>
 * 输入：operations = ["++X","++X","X++"] 输出：3 解释：操作按下述步骤执行： 最初，X = 0 ++X：X 加 1 ，X = 0 + 1 = 1 ++X：X 加 1 ，X = 1 + 1 = 2
 * X++：X 加 1 ，X = 2 + 1 = 3
 */
public class FinalValueAfterOperations {
    
    /**
     * 模拟
     */
    private final static String PARAM_CONST_X   = "--X";

    private final static String PARAM_CONST_X_2 = "X--";
    
    public int finalValueAfterOperations(String[] operations) {
        int X = 0;
        for (String s : operations) {
            if (PARAM_CONST_X.equals(s) || PARAM_CONST_X_2.equals(s)) {
                X--;
            } else {
                X++;
            }
        }
        return X;
    }
    
    /**
     * 模拟，关注给定的字符串“X--”的第二个字符即可 ASCII 中，+ 为 43，- 为 45
     */
    private final static char ASCII = 44;
    
    public int finalValueAfterOperations2(String[] operations) {
            //mapToInt:Stream中的元素转换成int类型
            return Arrays.stream(operations).mapToInt(v -> ASCII - v.charAt(1)).sum();
    }
    
    public static void main(String[] args) {
        FinalValueAfterOperations finalValueAfterOperations = new FinalValueAfterOperations();
        String[] operations = new String[] {"--X", "X++", "X++"};
        System.out.println(finalValueAfterOperations.finalValueAfterOperations(operations));
    }
}
